package br.org.desa.agendaescolar.controlador;

import java.awt.Color;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

/*import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.Font.FontFamily;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;*/

import br.org.desa.agendaescolar.dao.DAOCompromisso;
import br.org.desa.agendaescolar.modelo.Compromisso;
import br.org.desa.agendaescolar.modelo.Usuario;


public class CompromissoControle {
	private DAOCompromisso daocompromisso = new DAOCompromisso();
    
	public Compromisso buscaCompromissoPorCodigo(String codigo){
		return daocompromisso.findByCodigo(codigo);
	}
	
	public String buscaQntCompromissosPorUnidade(Usuario aluno, int unidade){
		try{
			return daocompromisso.findQntCompromissosPorUnidade(aluno, unidade);
		}catch(Exception e){
			return null;
		}
	}
	
    public boolean cadastrarCompromisso(Compromisso c){
       try{
    	   daocompromisso.persist(c);
    	   System.out.println("Cadastrado realizado com sucesso");
    	   return true;
       }
       catch(Exception e){
    	   return false;
       }
    	   
    }
    
    public void alterarCompromisso(Compromisso c){
        daocompromisso.update(c);
        System.out.println("Alteracao realizada com sucesso!");
    }
    
	public List<Compromisso> listaCompromissos(){
        try{
        	return daocompromisso.findAll();
        }catch(Exception e){
        	return null;
        }
    }
	
	public List<Compromisso> listaCompromissosDisponiveis(String valor){
		try{
			return daocompromisso.findByDisponibilidade(valor);
		}catch(Exception e){
			return null;
		}
	}
	
	public void desativaCompromissosPassados(){
		List<Compromisso> compromissosPassados = new ArrayList<Compromisso>();
		compromissosPassados.addAll(daocompromisso.findAllByDataPassada());
		
		for(Compromisso c: compromissosPassados){
			c.setDisponivel(false);
		}
	}
	
	public List<Compromisso> listaCompromissosPorAluno(Usuario aluno){
		try{
			return daocompromisso.findAllByAluno(aluno);
		}catch(Exception e){
			return null;
		}
	}
	
	public void removerCompromisso(int codigo){
		try{
			Compromisso compromisso = daocompromisso.findByCodigo(Integer.toString(codigo));
			daocompromisso.remove(compromisso);
		}catch(Exception e){
		}
	}
	
	/*public String gerarPDF(Compromisso compromisso){
		String RESULT = "/home/00778898431/"+ compromisso.getAluno().getNome()+"-"+compromisso.getCodigo()+".pdf";
		
		Document document = new Document();
		try {
			PdfWriter.getInstance(document, new FileOutputStream(RESULT));
			document.open();
			document.add(new Paragraph("GEO PETROLINA - LABORATÓRIO DE REDAÇÃO"));
			document.add(new Paragraph("Comprovante de Agendamento de Aula"));
			document.add(new Paragraph("_____________________________________________________________________"));
			document.add(new Paragraph("Nome do Aluno: "+compromisso.getAluno().getNome()));
			document.add(new Paragraph("Professor: "+compromisso.getProfessor().getNome()));

			Locale locale = new Locale("pt","BR");
			SimpleDateFormat formatador = new SimpleDateFormat("dd' de 'MMMMM' de 'yyyy' - 'HH':'mm'h'",locale);
			document.add(new Paragraph("Dia e Hora: "+formatador.format(compromisso.getDataHora().getTime())));

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		} finally{
			document.close();
		}
	    
		return RESULT;
	}*/
}
